var express = require('express');
var router = express.Router();
var positionDao = require('../dao/mechanism_position');
var mechanismDao = require('../dao/mechanism');
var AdminToken = require('../db/user_tokens');
var positionRoutes = module.exports;

/**
 * 获取机构地址列表  (管理员)
 * @param  token
 * @param  id
 * @param  mechanism_name
 *         url/position/list
 */
positionRoutes.list = function(req, res) {
    var par = paramAll(req);
    par.size = !par.size ? 10 : parseInt(par.size);
    par.start = !par.page ? 0 : par.start = (parseInt(par.page) - 1) * parseInt(par.size);
    AdminToken.checkAdminLogin(par.token, null, function(err, errCode, adminInfo) {
        if(err) return  res.json(new ERR(err, errCode));
        positionDao.list(par, function(err, result) {
            if(err) return res.json(new ERR(err, 400));
            res.json(new PKG(result));
        })
    });
}
router.post('/list', positionRoutes.list);

/**
 * 添加或编辑地址
 * @param  id
 * @param  openid
 * @param  mechanism_id
 * @param  course_id
 * @param  telephone
 * @param  tel_name
 * @param  address
 * @param  end_date
 * @param  lon
 * @param  lat
 *         url/position/save
 */
positionRoutes.save = function(req, res) {
    var par = paramAll(req);
    if(!par.mechanism_id) return res.json(new ERR('机构id不为空！', 400));
    if(!par.telephone) return res.json(new ERR('联系电话不为空！', 400));
    if(!par.tel_name) return res.json(new ERR('联系人不为空！', 400));
    if(!par.address) return res.json(new ERR('详细地址不为空！', 400));
    if(!par.lon) return res.json(new ERR('经度不为空！', 400));
    if(!par.lat) return res.json(new ERR('维度不为空！', 400));
    mechanismDao.checkId(par, function(e) {
        if(e) return res.json(new ERR(e));
        positionDao.save(par, function(err, result) {
            if(err) {
                if(err.status == 401) return res.json(err);
                return res.json(new ERR(err, 400));
            }
            res.json(new PKG(result));
        })
    })
}
router.post('/save', positionRoutes.save);

/**
 *  给机构添加地址权限(管理员)
 * @param  openid
 * @param  mechanism_id
 * @param  duration
 * @param  num
 * @param  pay_amount
 *         url/position/grant
 */
positionRoutes.grant = function(req, res) {
    var par = paramAll(req);
    if(!par.openid) return res.json(new ERR('openid不为空！', 400));
    if(!par.mechanism_id) return res.json(new ERR('机构id不为空！', 400));
    if(!par.duration) return res.json(new ERR('duration不为空！', 400));
    if(!par.num) return res.json(new ERR('duration不为空！', 400));
    if(!par.pay_amount) return res.json(new ERR('pay_amount不为空！', 400));
    AdminToken.checkAdminLogin(par.token, null, function(err, errCode, adminInfo) {
        if(err) return  res.json(new ERR(err, errCode));
        positionDao.grant(par, function(err, result) {
            if(err) return res.json(new ERR(err, 400));
            res.json(new PKG(result));
        })
    });
}
router.post('/grant', positionRoutes.grant);

/**
 *  地址管理（机构）
 * @param  openid
 * @param  mechanism_id
 * @param  page
 * @param  size
 *         url/position/addrManage
 */
positionRoutes.addrManage = function(req, res) {
    var par = paramAll(req);
    if(!par.openid) return res.json(new ERR('openid不为空！', 400));
    if(!par.mechanism_id) return res.json(new ERR('机构id不为空！', 400));
    par.size = !par.size ? 10 : parseInt(par.size);
    par.start = !par.page ? 0 : par.start = (parseInt(par.page) - 1) * parseInt(par.size);
    positionDao.addrManage(par, function(err, result) {
        if(err) return res.json(new ERR(err, 400));
        res.json(new PKG(result));
    })
}
router.post('/addrManage', positionRoutes.addrManage);

module.exports = router;